home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 October / macformat-029.iso / mac / Shareware City / Developers / LControlPanel & Friends ƒ / StdControlPanel.cp < prev    next >
Encoding:
Text File  |  1995-06-22  |  1.9 KB  |  122 lines  |  [TEXT/MMCC]

  1. /*
  2.     StdControlPanel
  3.     ©1995 Chris K. Thomas.  All Rights Reserved.
  4.     
  5.     Safe Control Panel class.
  6. */
  7.  
  8. // * includes
  9. #include <UException.h>
  10. #include "StdControlPanel.h"
  11. #include <a4stuff.h>
  12. //#include <UDrawingState.h>
  13.  
  14. // * locals
  15. static StdControlPanel *gOurPanel = NULL;
  16.  
  17. // * implementation
  18. pascal unsigned long main (short message, short item, short numItems, 
  19.                     short cPrivateVal, const EventRecord *theEvent, 
  20.                      unsigned long cdevStorageValue,  DialogPtr 
  21.                         cPDialog)
  22. {
  23.     long out = 554;
  24.     
  25.     EnterCodeResource();
  26.     
  27.     SetPort(cPDialog);
  28. //    InvertRect(&cPDialog->portRect);
  29.     
  30.     Try_
  31.     {
  32.         if(gOurPanel)
  33.         {
  34.             gOurPanel->SetLastEvent((EventRecord *)theEvent);
  35.             switch(message)
  36.             {
  37.                 case updateDev:
  38.                     gOurPanel->Update();
  39.                     break;
  40.                     
  41.                 case hitDev:
  42.                     gOurPanel->Click();
  43.                     break;
  44.                     
  45.                 case nulDev:
  46.                     gOurPanel->Idle();
  47.                     break;
  48.                     
  49.                 case activDev:
  50.                     gOurPanel->Activate();
  51.                     break;
  52.                     
  53.                 case deactivDev:
  54.                     gOurPanel->Deactivate();
  55.                     break;
  56.                     
  57.                 case keyEvtDev:
  58.                     gOurPanel->KeyDown();
  59.                     break;
  60.                     
  61.                 case undoDev:
  62.                     gOurPanel->Undo();
  63.                     break;
  64.                     
  65.                 case cutDev:
  66.                     gOurPanel->Cut();
  67.                     break;
  68.                     
  69.                 case copyDev:
  70.                     gOurPanel->Copy();
  71.                     break;
  72.                     
  73.                 case pasteDev:
  74.                     gOurPanel->Paste();
  75.                     break;
  76.                     
  77.                 case clearDev:
  78.                     gOurPanel->Clear();
  79.                     break;
  80.                     
  81.                 case closeDev:
  82.                     if(gOurPanel)
  83.                         delete gOurPanel;
  84.                     
  85.                     gOurPanel = NULL;
  86.                     break;
  87.             }
  88.         }
  89.         else
  90.         {
  91.             switch(message)
  92.             {
  93.                 case initDev:
  94.                     gOurPanel = CreateControlPanel(cPDialog);    //user-provided function
  95.                     ThrowIfNULL_(gOurPanel);
  96.                     break;
  97.             }
  98.         }
  99.         
  100.         
  101.     }
  102.     Catch_(inErr)
  103.     {
  104.         SysBeep(32);
  105.         out = cdevGenErr;
  106.     }
  107.     EndCatch_
  108.     
  109.     ExitCodeResource();
  110.     
  111.     return out;
  112. }
  113.  
  114. StdControlPanel::StdControlPanel(DialogPtr inDialog)
  115. {
  116.     mOurDialog = inDialog;
  117. }
  118.  
  119. StdControlPanel::~StdControlPanel()
  120. {
  121.  
  122. }